#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N = 2e5 + 10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
int n, x;
int a[N], b[N];
void solve()
{
    cin >> n >> x;

    for(int i = 1; i <= n; i++) cin >> a[i], b[i] = a[i];

    sort(a + 1, a + 1 + n);


	bool ok =true;

	for(int i=1;i<=n;i++)
	{
		if(a[i]!=b[i]&&i>n-x&&i<x+1) {cout<<"NO"<<'\n';return;}
	}
	cout<<"YES"<<'\n';



}

int main()
{
    close();
    int T;
    cin >> T;
    while (T--) solve();
    return 0;
}
//想要非递减
//|i-j|>=x 可以交换


//如果i==1 那么j-i==x可以开始交换 即 j>=x+i的可以交换即 [x+i,n]可以变成有序的
//如果j=n  j-i==x的可以开始交换, i<=j-x j从n开始 可以保证 [1,n-x]为有序的
//综上两步只有 n-x到x+1时不确定的,当然这个区间不一定存在